Peer-to-peer (P2P) and content delivery networks (CDNs) applications serve large amounts of data and generate significant amounts of network traffic. These applications leverage multiple copies of data content populated to multiple different network nodes to allow a requesting agent to obtain portions of the data content from one or more of many possible data sources. Distributing data content to multiple nodes for delivery on behalf of applications such as file sharing, real-time communication, and on-demand media streaming improves application performance and scalability.
P2P and CDN application clients often select resources naively, that is, without incorporating network topology information or related details. Rather, clients rely on heuristics to approximate such information. As a result, network data traffic exchanged using these applications may congest network links, cross service provider network boundaries multiple times, and generally transit the communication network in a manner that is suboptimal from a user-standpoint and undesirable from the point of view of the service provider. For instance, while two peers may be members of the same service provider network, an overlay link connecting the peers may nevertheless traverse multiple network boundaries, which unnecessarily increases the inter-peer transit costs to the service provider. Furthermore, although distributed applications capitalize on excess bandwidth at the data sources to improve throughput and reduce latencies for end-users while also reducing the burden of content providers to provision application servers, the ability to cheaply distribute data content comes at the expense of service providers, which bear the cost of inefficiently transporting network data.
A service provider, content provider, or a third party may provide an Application-Layer Traffic Optimization (ALTO) protocol service to provide guidance to application clients and content request routers regarding selection of a particular resource from which to obtain data content. The ALTO service provides information that incorporates provider preferences with regard to network resources to influence network resource consumption patterns while maintaining or improving application performance. In one example, a service provider provisions an ALTO server for a service provider network with network topology and topology link cost information. Application clients and content request routers send ALTO requests to the ALTO server to obtain a network map and a corresponding cost map. The network map specifies a set of topological groupings, or “PIDs,” defined by the ALTO server for the network. A particular PID within a network map may represent a single device or device component, a collection of devices such as a network subnet identified by a network address prefix, a service provider network, or some other grouping. A cost map for a corresponding network map defines provider preferences respecting inter-PID routing costs for connections among the various PIDs of the network map. Using the network map and cost map provided by the ALTO server, application clients and content request routers select serving resources to minimize costs, as specified by the ALTO maps, between content requesting clients and available resources.
As a result, service providers provisioning the ALTO server may direct application clients and request routers to select resources according to service provider preferences, which may include optimizing throughput and/or user experience, for instance, reducing costs to the service provider, or promoting other provider objectives. The ALTO service and ALTO protocol is described in further detail in J. Seedorf et al., RFC 5693, “Application-Layer Traffic Optimization (ALTO) Problem Statement,” Network Working Group, the Internet Engineering Task Force draft, October 2009; and R. Alimi et al., “ALTO Protocol: draft-ietf-alto-protocol-06.txt,” ALTO Working Group, the Internet Engineering Task Force draft, October 2010, each of which is incorporated herein by reference in its entirety.